package cn.hn.java.summer.nap.model;

import cn.hn.java.summer.nap.Constants;
import lombok.Data;

@Data
public class ModelField {

	/**
	 * 所属表
	 */
	private String tableName;

	/**
	 * 属性名
	 */
	private String fieldName;
	
	/**
	 * 属性名中文
	 */
	private String fieldNameCn;
	
	/**
	 * 属性类型
	 */
	private String fieldType;
	
	/**
	 * 列类型
	 */
	private String columnType;
	
	/**
	 * 可空
	 */
	private String nullable;
	
	/**
	 * 键类型
	 */
	private String columnKey;
	
	/**
	 * 属性注释
	 */
	private String fieldComment;
	
	public String getFieldType(){
		if(fieldType!=null){
			return fieldType;
		}
		String type=columnType.replaceAll("[\\W\\d]", "").toLowerCase();
		switch (type) {
		case "int":
			fieldType="Integer";
			break;
		case "varchar":
			fieldType="String";
			break;
		case "text":
			fieldType="String";
			break;
		case "bit":
			fieldType="Integer";
			break;
		case "datetime":
			fieldType="String";
			break;
		case "decimal":
			fieldType="Float";
			break;
		default:
			fieldType="String";
			break;
		}
		return fieldType;
	}
	
	public String getFieldName2(){
		return fieldName.toUpperCase().substring(0,1)+fieldName.substring(1);
	}
	
	public String getGeterName(){
		return "get"+getFieldName2()+"()";
	}
	
	public boolean isRequired(){
		return nullable.equals("NO");
	}
	
	public boolean isPrimaryKey(){
		return columnKey.equals(Constants.PRIMARY_KEY);
	}
	
}
